// /utils/distance.js

/**
 * 获取用户当前位置，并计算与目标坐标的距离
 * @param {number} targetLat - 目标纬度
 * @param {number} targetLon - 目标经度
 * @param {string} coordType - 坐标系类型：'wgs84'（GPS原始）或 'gcj02'（高德/腾讯）
 * @returns {Promise<string>} 返回格式化后的距离，如 "1.8km"、"320m" 或 "未知"
 */
export function getDistanceTo(targetLat, targetLon, coordType = 'gcj02') {
  return new Promise((resolve) => {
    // 1. 获取用户当前位置
    uni.getLocation({
      type: coordType,
      success: (res) => {
        const userLat = res.latitude;
        const userLon = res.longitude;

        // 2. 计算两点间距离（单位：公里）
        const R = 6371; // 地球半径 km
        const dLat = (targetLat - userLat) * Math.PI / 180;
        const dLon = (targetLon - userLon) * Math.PI / 180;
        const a =
          Math.sin(dLat / 2) * Math.sin(dLat / 2) +
          Math.cos(userLat * Math.PI / 180) *
          Math.cos(targetLat * Math.PI / 180) *
          Math.sin(dLon / 2) * Math.sin(dLon / 2);
        const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        const distanceKm = R * c;

        // 3. 格式化输出
        if (distanceKm < 1) {
          resolve(`${Math.round(distanceKm * 1000)}m`);
        } else {
          resolve(`${distanceKm.toFixed(1)}km`);
        }
      },
      fail: (err) => {
        console.error('定位失败:', err);
        resolve('未知');
      }
    });
  });
}